/**
 * @scope enchant.JGZ.Figure.prototype
 */
enchant.JGZ.Figure = enchant.Class.create(enchant.JGZ.SpriteEx, {
  /**
   * 様々な図形Spriteを作り出す
   * @constructs
   * @param {Object} opt  opt.x: X座標, opt.y: Y座標
   */
  initialize : function(opt) {
    this._opt   = opt;
    var s       = this._generate(opt);

    enchant.JGZ.SpriteEx.call(this, s.width, s.height);
    this.image  = s;
    this.x      = opt.x;
    this.y      = opt.y;
  },
  /**
   * 各種図形生成メソッド
   */
  _generate : function(opt) {
  },
  /**
   * 図形の色を変更する
   * @param {String} color 色指定
   */
  changeColor : function(color) {
    this._opt.color = color;              
    this.image      = this._generate(this._opt);
  },
  o : {
    set: function() {
    },
    get: function() {
      return this._opt;     
    }
  }
});
/**
 * @scope enchant.JGZ.Square.prototype
 */
enchant.JGZ.Square = enchant.Class.create(enchant.JGZ.Figure, {
  /**
   * 四角形を作り出す
   * @constructs
   * @param {Object} opt
   */
  initialize : function(opt) {
    enchant.JGZ.Figure.call(this, opt);
  },
  /**
   * 四角形実生成部分
   * @param {Object} opt  opt.w: width, opt.h: height, opt.color: 色指定
   */
  _generate : function(opt) {
    var s = new Surface(opt.w, opt.h);
    s.context.fillStyle = opt.color;
    s.context.fillRect(0, 0, opt.w, opt.h);
    return s;           
  }
});
/**
 * @scope enchant.JGZ.Arc.prototype
 */
enchant.JGZ.Arc = enchant.Class.create(enchant.JGZ.Figure, {
  /**
   * 円を作り出す
   * @constructs
   * @param {Object} opt
   */
  initialize : function(opt) {
    enchant.JGZ.Figure.call(this, opt);
  },
  /**
   * 円実生成部分
   * @param {Object} opt  opt.x: X座標, opt.y: Y座標, opt.radius: radius, opt.color: 色指定
   */
  _generate : function(opt) {
    var s = new Surface(opt.radius*2, opt.radius*2);
    s.context.fillStyle = opt.color;
    s.context.beginPath();
    s.context.arc(opt.radius, opt.radius, opt.radius, 0, Math.PI*2, false);
    s.context.fill();
    return s;           
  },
  radius : {
    set: function() {
    },
    get: function() {
      return this._opt.radius;     
    }
  }

});
